//函数类型基本使用
// 参数必须要定义类型,但是函数的类型可以不用定义,会类型推导
function myArr(a: number, b: number) {
  return a + b
}

console.log(myArr(3, 6))

//小练习-在数组里找到数字3的下标并返回
function numberArr(a: number[], value: number) {
  return a.findIndex((item) => item === value)
}

console.log(numberArr([3, 5, 4, 1, 2, 9], 3))

//正常写法
const loginFun = (userName: string, password: string): boolean => {
  if (userName === 'admin' && password === '123456') {
    return true
  } else {
    return false
  }
}
loginFun('admin', '123456')

// 类型别名写法
type loginFunc1 = (userName: string, password: string) => boolean
const loginFunc2: loginFunc1 = (userName, password) => {
  if (userName === 'admin' && password === '123456') {
    return true
  } else {
    return false
  }
}
loginFunc2('admin', '123456')

// 可选参数在属性后面加上?
// 不写了

// 无返回值就返回的是void
// 不写了

//小练习
const arr2Str = (arr: Array<string | number>, separator?: string) => {
  return arr.join(separator)
}
arr2Str([1, 2, 3, 4])
arr2Str([1, 2, 3, 4], '-')
